A computer network system has one or more host network servers connected to serve data to one or more client computers over a network. FIG. 1 shows a simple computer network system 20 with a single host network server 2211 connected to multiple clients 24(1), 24(2), . . . , 24(N) via a network 26. The clients 24(1)-24(N) send requests for data and/or services to the server 22 over the network 26. For discussion purposes, suppose the server 22 is configured as an Internet service provider, or "ISP". The ISP server 22 provides an email service 28 that handles electronic mail messages over the Internet 26 and a web service 30 that supports a web site accessible by the clients.
The network 26 is a medium with a predefined bandwidth capacity that is shared among the clients 24(1)-24(N). The network 26 is represented in FIG. 1 as a network pipeline to indicate a finite bandwidth capacity. The network 26 is representative of different network technologies (e.g., Ethernet, satellite, modem-based, etc.) and different configurations, including a LAN (local area network), a WAN (wide area network), and the Internet. The bandwidth capacity depends on the technology and configuration employed. For this example, suppose the network 26 has a total bandwidth capacity of 1,000 kilobits per second (Kb/s). Given this fixed bandwidth, the ISP administrator can allocate portions of the bandwidth for the various services 28 and 30. For instance, the ISP administrator might allocate 400 Kb/s to the email service 28 and 600 Kb/s to the web service 30.
As the clients 24(1)-24(N) access the services 28 and 30, they consume bandwidth on the network 26. The responses from the host server 22 also consumer bandwidth. When the allocated bandwidth for a service becomes saturated with client requests and server responses (such as the web service when bandwidth consumption reaches 600 Kb/s), some of the requests are either delayed in transmission or not delivered to the intended destination.
To alleviate the problem of bandwidth saturation, network systems are often implemented with some form of request throttling that works to minimize network congestion and efficiently utilize the allocated bandwidth. The problem, however, becomes slightly more complicated in the case of multiple network servers on the same host system. Some network servers might disproportionately allocate bandwidth for their own tasks at the expense of excluding other concurrently running network servers from performing their requested operations. In this case, any bandwidth throttling mechanism must be effected among all of the network servers on the host computer network system.
One approach to a global bandwidth throttling system is described in a co-pending application Ser. No. 08/674,684, entitled "Adaptive Bandwidth Throttling for Network Services", filed Jul. 2, 1996, in the name of Murali R. Krishnan. This application is assigned to Microsoft Corporation. The adaptive bandwidth throttling system operates on the computer network system to allocate bandwidth to the network servers as a function of thresholds defined by the administrator. The bandwidth throttling system implements a series of successively significant bandwidth throttling actions in response to increasing bandwidth consumption, with the effect to minimize congestion and improve efficiency.
The bandwidth throttling system measures bandwidth usage and compares the measured usage against administrator defined thresholds. In one implementation, for example, the administrator uses thresholds to define three usage zones. When the bandwidth usage is low (i.e., the first zone), all services are permitted. No throttling action is taken. As request traffic increases, the measured bandwidth usage rises to exceed a first threshold (i.e., the second zone). When this occurs, the bandwidth throttling system initiates a throttling action in the form of delaying a class of requests for the network server.
If the demand for bandwidth further increases and the measured usage exceeds a second threshold (i.e., the third zone), the bandwidth throttling system escalates to a more severe throttling response. As an example, the bandwidth throttling system blocks the one class of requests from execution and concurrently delays another class of requests, which were previously not impacted in the initial throttling action taken in zone two.
As a result of the hierarchical response to increasing network traffic, the administrator can customize the bandwidth throttling to specific request classes. Those classes deemed by the administrator to be low priority could be blocked or rejected in favor of allowing higher priority classes to execute. Thus, the adaptive bandwidth throttling system incrementally reduces demand for network bandwidth without disrupting the provision of desired network services.
The bandwidth throttling system described in the co-pending application applies to the total bandwidth used by all services on all servers connected to the network, and is based on a single set of thresholds specified by the administrator. However, current server technology allows for administrators to run multiple "virtual" services all running on a single machine and service.
FIG. 2 shows an example in which the ISP 22 supports multiple domains 32(1)-32(M) on the same web service 30. For instance, it is not uncommon for an ISP to support thousands of domains on the same web service. To the client, however, each domain functions as its own service as if running on its own HTTP (Hypertext Transfer Protocol) server on its own machine. Hence, the ISP 22 is effectively running multiple "virtual services" on multiple "virtual" HTTP servers, all from the same web service on the same machine. In such cases, network bandwidth control cannot be limited to applying globally to all the virtual servers. The all-or-nothing approach is unacceptable because the administrator often desires to designate some virtual services as more or less critical than others. For this reason, finer bandwidth control is required. Bandwidth throttling must be controllable at the virtual service level as well.
Accordingly, the inventors have developed a bandwidth throttling system that effectively controls bandwidth on a per virtual service basis. The bandwidth throttling system thus improves upon the system and technology described in the above noted patent application.